package tech.aistar.corejava.day12;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @Author: lya
 * @Description: 本类的作用描述:
 * @CreateDate: 2019/7/30
 * @Version: 1.0
 */
public class HashMapDemo {
    public static void main(String[] args) {
        //key - Integer 类型
        //value - String类型
        Map<Integer,String> map = new HashMap<>();

        //调用put方法
        //针对key是无序的不可重复的,如果有重复的,那么后面的会覆盖前面的
        //这一点需要和hashset进行区分[拒绝添加]

        map.put(1,"java");
        map.put(2,"python");
        map.put(1,"mysql");//会覆盖java
        map.put(3,"oracle");
        map.put(4,"redis");

        System.out.println(map.size());//4

        //根据key来获取value
        System.out.println(map.get(2));//python

        System.out.println("====迭代方式一=====");

        //map集合特有的两种迭代方式 - 一定要能手动写出来
        //第一种方式
        //将map所有的可以放入到一个set集合中
        //返回此map集合包含的键的Set视图
        Set<Integer> keySets = map.keySet();

        Iterator<Integer> iter = keySets.iterator();
        while(iter.hasNext()){
            Integer key = iter.next();//获取每个key
            //根据key来获取value
            String value = map.get(key);
            //输出
            System.out.println(key + "->" +value);
        }

        System.out.println("========");
        //直接输出
        System.out.println(map);

        System.out.println("======迭代方式二======");
        //Set<Map.Entry<K,V>> entrySet()
        //返回此map集合中包含的key - value的Set视图
        Set<Map.Entry<Integer,String>> entrySet = map.entrySet();

        Iterator<Map.Entry<Integer,String>> entryInter = entrySet.iterator();

        while(entryInter.hasNext()){
            Map.Entry<Integer,String> entry = entryInter.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
        System.out.println("====JDK8.0====");
        map.forEach((k,v) ->System.out.println(k+":"+v));

    }
}
